package practice1_100;

public class Practice1035 {
    public int maxUncrossedLines(int[] nums1, int[] nums2) {
        int num1Len=nums1.length;
        int num2Len=nums2.length;
        int[][] dpTable=new int[num1Len][num2Len];
        for(int i=0;i<num1Len;i++){
            if(nums1[i]==nums2[0])
                dpTable[i][0]=1;
            else if(i!=0)
                dpTable[i][0]=dpTable[i-1][0];
        }
        for(int j=0;j<num2Len;j++){
            if(nums1[0]==nums2[j])
                dpTable[0][j]=1;
            else if(j!=0)
                dpTable[0][j]=dpTable[0][j-1];
        }
        for(int i=1;i<num1Len;i++){
            for(int j=1;j<num2Len;j++){
                // if((i==0||j==0)&&nums1[i]==nums2[j])dpTable[i][j]=1;i!=0&&j!=0&&
                if(nums1[i]==nums2[j]){
                    dpTable[i][j]=dpTable[i-1][j-1]+1;
                }else{
                    dpTable[i][j]=Math.max(dpTable[i-1][j],dpTable[i][j-1]);
                }
            }
        }
        return dpTable[num1Len-1][num2Len-1];
    }

    public static void main(String[] args) {
       int a= new Practice1035().maxUncrossedLines(new int[]{1,2,4},new int[]{1,4,2});
        System.out.println( a);
    }
}
